package com.yuehuanghun.admin.core.config.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 可记录日志的域
 * @author yadmin
 *
 */
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LoggableField {
	/** 字典名 */
	public String dictType() default "";
	/** 属性类型 */
	public FieldType type() default FieldType.NORMAL;
	/** 属性名 */
	public String name();
	
	public LogType logType() default LogType.DETAIL;
	
	public enum FieldType {
		NORMAL, USER, DEPT, DICT, AREA
	}
	
	public enum LogType {
		/** 变更详细，记录更新前、更新后的内容 */
		DETAIL("detail"), 
		/** 变更事件，不记录更新前、更新后的内容，用于大文本或二进制数据字段 */
		EVENT("event");
		
		private String name;
		LogType(String name) {
			this.name = name;
		}
		
		public String getName() {
			return name;
		}
	}
}
